#!/bin/bash

# 检查是否提供了两个参数
if [ "$#" -ne 2 ]; then
    echo "Usage: $0 <directory1> <directory2>"
    exit 1
fi

dir1="$1"
dir2="$2"

# 比较两个目录下的文件
find "$dir1" -type f | while read file1; do
    # 构建相对于dir1的相对路径
    relpath1="${file1#$dir1/}"
    
    # 检查相对路径的文件在dir2中是否存在
    file2="$dir2/$relpath1"
    
    if [ -f "$file2" ]; then
        # 如果文件存在，使用diff比较文件内容
        if ! diff -q "$file1" "$file2" > /dev/null; then
            # 如果文件内容不同，打印文件路径
            echo "Files differ: $file1 and $file2"
        fi
    else
        # 如果在dir2中没有找到对应的文件，也打印出来
        echo "File only exists in $dir1: $file1"
    fi
done

# 比较两个目录下独有的文件
find "$dir2" -type f | while read file2; do
    # 构建相对于dir2的相对路径
    relpath2="${file2#$dir2/}"
    
    # 检查相对路径的文件在dir1中是否存在
    file1="$dir1/$relpath2"
    
    if [ ! -f "$file1" ]; then
        # 如果在dir1中没有找到对应的文件，打印出来
        echo "File only exists in $dir2: $file2"
    fi
done
